1. Field of the Invention
The invention relates generally to data communications with a network switch, and, more particularly, to implementing a reserve list within a network switch.
2. Related Art
The rapidly increasing popularity of networks such as the Internet has spurred the demand for network services. In order to meet the demand for the increased network services, it has been found that increasing the size of frames typically increases the through-put of a network and therefore meets the increased demand.
The prior art networks typically used a 1518 byte frame size that was designed to protect against the high error rate of physical-layer Ethernet components. However, computer processing power has increased by an order of magnitude. Moreover, the use of switched Ethernet over various media has significantly reduced errors. With these reduced errors, larger frame sizes may now be used with greater success.
Increasing the frame size typically reduces server overhead and increases through-put and has become an attractive option. However, typical switches have experienced a number of problems handling the larger frame size. In particular, as described in further detail below, the first in first out type pointer buffers are required to have greater memory capacity, which increases at least the cost thereof. The typical alternative technology, i.e., linked list type devices have their own problems, such as difficulties processing at an increased speed.
FIG. 1 shows a conventional network 100 in which a network switch 102 connects devices 104A-104N and 112A-112N. Each of devices 104A-N, 112A-N can be any network device, such as a computer, a printer, another network switch, or the like. Switch 102 transfers data between the devices 104A-N, 112A-N over channels 106A-N and 114A-N. Channels 106A-N and 112A-N typically include fiber optic links, wireline links, or wireless links.
In the typical network switch 102, a queue controller manages and assigns pointers to a buffer 108. The buffer 108 typically stores frame data received from any one of the devices 104A-N and 112A-N. A typical frame has its data fragmented into many discontinuous portions in the buffer 108. The queue controller typically organizes these portions with lists of pointers and forwards these lists from ingress of frames to egress of frames through ports of ingress modules and egress modules.
Accordingly, as frames are received in the switch 102, they are stored in the buffer 108. The location of the frames in the buffer 108 is based on the pointers as is well known in the art. The pointers are obtained from a reserve pointer storage 110. One conventional approach to storing a pointer in the reserve pointer storage is the use of a first in first out (also referred to herein as “FIFO”) type reserve pointer storage 110 as described in further detail below.
FIG. 1 shows the switch 102 having a FIFO reserve pointer storage 110. One advantage of this typical arrangement is that the control logic for fetching free pointers from the reserve list and providing reserve pointers to the ingress module is very simple. Another advantage is that prefetching of enough pointers to the FIFO memory to meet certain speed constraints for the worst case (typically consecutive frames of size 1 kilobyte greater than the buffer size) can be accomplished. However, the disadvantage of the reserve list FIFO pointer storage is that it consumes a great deal of area when the fragmentation is high. For example, a large frame size implementation would need 20 deep FIFO memories per port, and utilizing fragmented 128 byte buffers would require 80 deep FIFO memories per port. This results in increased cost and complexity for the memory and the switch.
FIG. 2 shows a conventional switch 102 utilizing the alternative linked list reserve pointer storage 110. In this implementation, reserve pointers are typically stored in a linked list. The reserve list is stored in a module that may typically maintain three registers that describe the lists. The description typically includes head, tail, and size. The links between pointers are typically stored in an embedded memory in the switch. The advantage of the linked list approach is that it is more area efficient as fragmentation of the memory increases. Regardless of how many pointers are needed in a frame, the reserve list only requires the three registers (i.e., head, tail, and size). However, the disadvantage of the linked list is that the reserve list does not have immediate access to the “head to next” pointer. To get this pointer, the switch 102 must read to a centrally arbitrated memory. The time required to execute this read makes meeting the wire speed requirement very challenging.
Another disadvantage of the linked list reserve pointer storage switch approach is that delivery of successfully switched frames may be more complex and error prone. In this regard, the control logic must consider whether the “head to next” read can be perpetual, in progress, or has been successfully completed. The three different cases must all be handled differently as is well known in the art.
The use of jumbo frames also has an impact on the use of the limited number of pointers that are in a switch. The reserve list typically holds a number of pointers that are not being used and the switches have a limited number of pointers. The reserve list further typically retains the pointers for a frame that ingressed successfully but was not forwarded to a destination output queue (dropped frames). Accordingly, these pointers cannot be used by other ports and thus impact switch operations. For example, in previous designs, the typical switch had 256 total pointers, and a frame consisted of up to 3-4 pointers. Accordingly, the reserve list held only about 1.5 percent of the switches total pointers when a frame was dropped. Switches that may support jumbo frames up to 10,240 bytes (20 pointers), still only have 256 total pointers. Now a single reserve list retains about 8 percent of the switches pointers when a frame has dropped. For example, if a particular switch has 6 ports and jumbo frames ingress all 6 ports and all of the jumbo frames are dropped and thereafter a normal frame ingresses only at one port, the result is that five ports would each hold 20 pointers in reserve. This would represent 100/256 of the pointers or 40 percent of the available buffer memory. Thus, the limited number of pointers cause problems, such as a lack of pointers, when jumbo frames are used.
Accordingly, there is a need for a network switch that includes a pointer reserve storage and/or process that overcomes the disadvantages realized when using larger size frames.